package rabbitmq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class ProducerDemo {
    public static void main(String[] args) throws IOException, TimeoutException {
        // 1. 建立连接
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("47.109.89.128");
        connectionFactory.setPort(5672); // 需要提前开放端口号
        connectionFactory.setUsername("study"); // 账号
        connectionFactory.setPassword("study"); // 密码
        connectionFactory.setVirtualHost("bite"); // 虚拟主机
        Connection connection = connectionFactory.newConnection();

        // 2. 开启信道
        Channel channel = connection.createChannel();

        // 3. 声明交换机 - 使用内置的交换机
        // 4. 声明队列
        /*
         * 参数1：队列名称
         * 参数2：可持久化：队列中的消息是否持久化，默认消息存储在内存中
         * 参数3：是否独占：该队列是否只供一个消费者进行消费，是否进行消息共享，true则多个消费者可以共享，false则只有一个消费者
         * 参数4：是否自动删除：最后一个消费者断开连接后，该队列是否自动删除，true则自动删除，false则不自动删除
         * 参数5：其他参数
         */
        channel.queueDeclare("hello", true, false, false, null);
        // 5. 发送消息
        /*
         * 参数1：交换机名称
         * 参数2：路由key   内置交换机，routing key和队列名称保持一致
         * 参数3：属性配置
         * * 参数4：消息内容
         */
        for(int i = 0; i < 10; i++) {
            String msg = "hello rabbitmq~" + i;
            channel.basicPublish("", "hello", null,msg.getBytes());
        }

        System.out.println("消息发送成功");
        // 6. 资源释放
        channel.close();
        connection.close();
    }
}
